package com.oop.ch06;

import com.oop.ch01.Common;

public class Test {
	public static void main(String[] args) {
		demo1();
	}
	
	//父类和子类的类型转换---向下转型 父类 转 子类
	public static void demo3(){
		Matser matser=new Matser();
		Dog dog=new Dog();
		matser.play(dog);
		matser.play(new Cat());
	}
	
	/**
	 * 继承多态---使用返回值作为多态
	 */
	public static void demo2(){
		//实例化主人对象
		Matser matser=new Matser();
		//根据宠物类型获取宠物对象（pet==cat 但是 实例化的子类对象只有父类中公共的属性和方法）
		Pet pet=matser.getPet(2);
		//主人给宠物喂食
		matser.feed(pet);
		
	}
	
	/**
	 * 继承多态---使用形参作为多态
	 */
	public static void demo1(){
		//调用sayHello传递的具体的值---实参
		// String str=sayHello("张三");
		// System.out.println(str);
		
		Cat cat=new Cat("波斯猫", "翠花", Common.SEX_WOMAN, 2, 4.5, 9.9);
		//cat.print();
		
		Dog dog=new Dog();
		dog.setLoay(8.9);
		dog.setAge(2);
		dog.setName("旺财");
		dog.setSex(Common.SEX_MAN);
		dog.setWeight(25);
		dog.setType("哈士奇");
		//dog.print();
		
		// Pet cat=new Cat();
		// Pet dog=new Dog();
		
		
		Matser matser=new Matser();
		//调用主人给狗狗喂食的方法
		//feed(Pet pet) 形参定义的是父类的类型
		//matser.feed(cat) 实参是父类的子类的对象
		matser.feed(cat);//继承多态-形参多态
		//调用主人给小猫喂食的方法
		matser.feed(dog);//继承多态-形参多态
	}
	
	//方法里面定义的参数 叫 形参
	public static String sayHello(String name){
		return "你好，"+name;
	}
}
